/* This file was generated with JastAdd2 (http://jastadd.org) version R20121112 (r872) */
package icode;

import util.*;
import java.util.*;
/**
 * @production JmpCond : {@link Jmp} ::= <span class="component">{@link Operand}</span> <span class="component">&lt;Label:String&gt;</span>;
 * @ast node
 * @declaredat /Users/yonk/Documents/workspace/YCompiler/icodespec/icode.ast:36
 */
public abstract class JmpCond extends Jmp implements Cloneable {
  /**
   * @apilevel low-level
   */
  public void flushCache() {
    super.flushCache();
  }
  /**
   * @apilevel internal
   */
  public void flushCollectionCache() {
    super.flushCollectionCache();
  }
  /**
   * @apilevel internal
   */
  @SuppressWarnings({"unchecked", "cast"})
  public JmpCond clone() throws CloneNotSupportedException {
    JmpCond node = (JmpCond)super.clone();
    return node;
  }
  /**
   * @ast method 
   * @aspect icodeToString
   * @declaredat /Users/yonk/Documents/workspace/YCompiler/icodespec/icodeToString.jadd:73
   */
  abstract String opString();
  /**
   * @ast method 
   * @aspect icodeToString
   * @declaredat /Users/yonk/Documents/workspace/YCompiler/icodespec/icodeToString.jadd:75
   */
  public void appendBody(TabbedBuffer buffer) {
        buffer.append(opString());
        buffer.append(getOperand());
        buffer.append(getLabel());
    }
  /**
   * @ast method 
   * 
   */
  public JmpCond() {
    super();


  }
  /**
   * @ast method 
   * 
   */
  public JmpCond(Operand p0, String p1) {
    setChild(p0, 0);
    setLabel(p1);
  }
  /**
   * @apilevel low-level
   * @ast method 
   * 
   */
  protected int numChildren() {
    return 1;
  }
  /**
   * Replaces the Operand child.
   * @param node The new node to replace the Operand child.
   * @apilevel high-level
   * @ast method 
   * 
   */
  public void setOperand(Operand node) {
    setChild(node, 0);
  }
  /**
   * Retrieves the Operand child.
   * @return The current node used as the Operand child.
   * @apilevel high-level
   * @ast method 
   * 
   */
  public Operand getOperand() {
    return (Operand)getChild(0);
  }
  /**
   * Retrieves the Operand child.
   * <p><em>This method does not invoke AST transformations.</em></p>
   * @return The current node used as the Operand child.
   * @apilevel low-level
   * @ast method 
   * 
   */
  public Operand getOperandNoTransform() {
    return (Operand)getChildNoTransform(0);
  }
  /**
   * Replaces the lexeme Label.
   * @param value The new value for the lexeme Label.
   * @apilevel high-level
   * @ast method 
   * 
   */
  public void setLabel(String value) {
    tokenString_Label = value;
  }
  /**
   * Retrieves the value for the lexeme Label.
   * @return The value for the lexeme Label.
   * @apilevel high-level
   * @ast method 
   * 
   */
  public String getLabel() {
    return tokenString_Label != null ? tokenString_Label : "";
  }
}
